import java.util.Scanner;
import java.util.*;

public class MC0412符文方阵 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        // code here
        int n = input.nextInt();
        int m = input.nextInt();
        int[][] arr1 = new int[m][m];
        //第一个 m x m 二维
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < m; j++) {
                arr1[i][j] = input.nextInt();
            }
        }
        //读取 n-1 次矩阵
        for (int mid = 1; mid < n; mid++) { // 从第二个方阵开始 (索引为1)
            int[][] arr2 = new int[m][m];
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < m; j++) {
                    arr2[i][j] = input.nextInt();
                }
            }
            // 执行融合操作，并更新 arr1
            arr1 = fuseMatrices(arr1, arr2, m);
        }
        //打印
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < m; j++) {
                System.out.print(arr1[i][j]);
                if (j < m - 1) { // 如果不是当前行的最后一个元素，则打印一个空格
                    System.out.print(" ");
                }
            }
            System.out.println(); // 每打印完一行后换行
        }

        input.close();
    }

    public static int[][] fuseMatrices(int[][] p, int[][] q, int m) {
        int[][] res = new int[m][m];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < m; j++) {
                int SumMod2 = 0; // 用于计算 c_ij
                for (int k = 0; k < m; k++) {// 根据公式中的 Σ (求和)
                    //Σ (Sigma) 符号本身就代表求和（也就是加法）
                    //然后将所有这些乘积项加起来,在进行取模
                    //SumMod2 = (SumMod2 + (p[i][k] * q[k][j])) % 2;
                    //异或
                    SumMod2 ^= (p[i][k] * q[k][j]) % 2;
                }
                res[i][j] = SumMod2;
            }
        }
        return res;
    }
}
